package com.neusoft.ch5;
/*
 * 课堂笔记：
 * 1、方法重载
 *   方法的重载是在一个类中定了多个同名的方法，这些同名的方法就构成了方法的重载；
 *   构成方法重载的条件：
 *      方法名相同；
 *      方法的参数列表不同：
 *          个数不同；
 *          类型不同；
 *          顺序不同（所有的参数类型不能是同一类型）
 *      返回值类型无所谓；形参的变量名无所谓；    
 *   重载方法的调用：
 *      重载方法在调用时，取决于实参列表；（方法调用时，实参和形参是一一对应的）
 *      
 * 2、变长参数方法（扩展内容）
 *    变长参数只能定义在函数的形参列表的最后，而且一个函数的形参列表中至多只能有一个变长参数；
 *    变长参数是指在方法定义时，形参的个数可以有无数个；
 *    变长参数的方法和其同类中同名的方法构成方法重载；   
 *    变长参数的个数可以是0~无数个；
 *    变长参数的本质其实是一个该类型的数组；
 *    如果在方法调用时，非变长参数的函数和变长参数的函数都满足实参的列表要求，则优先调用飞变长参数的函数；
 *    在子方法中，变长参数就是一个一维数组；通过数组操作的方式取出其中的内容；
 *      
 * 
 * 
 */
public class TestCh5 {

	public static void main(String[] args) {
//		printMe(20,120);
		printMe(20,120,121,12,1,2,12,1,2,1,2,1,2);
	}

	/**
	 * 方法重载：
	 * @param age
	 */
	private static void printMe(int age) {
		// 遍历行数
		System.out.println("My age is :" + age);
	}

	/**
	 * 方法重载：类型相同，个数不同
	 * @param age
	 * @param tall
	 */
	private static void printMe(int age, int tall) {
		// 遍历行数
		System.out.println("非变长参数：My age is :" + age + ",tall:" + tall);
	}
	/**
	 * 方法重载：类型相同，个数不同
	 * @param age
	 * @param tall
	 */
//	private static void printMe( int tall,int age) {
//		// 遍历行数
//		System.out.println("My age is :" + age + ",tall:" + tall);
//	}
	
	/**
	 * 方法重载：个数相同，类型不同
	 * @param age
	 * @param name
	 */
	private static void printMe(int age, String name) {
		// 遍历行数
		System.out.println("My age is :" + age + ",name is:" + name);
	}

	/**
	 * 方法重载：顺序不同（所有的参数类型不能是同一类型）
	 * @param age
	 * @param name
	 */
	private static void printMe(String name,int age ) {
		// 遍历行数
		System.out.println("My age is :" + age + ",name is:" + name);
	}
	/**
	 * 方法重载：变长参数
	 * @param age
	 * @param tall
	 * @param weight 变长参数就是一个一维数组
	 */
	private static void printMe(int age, int tall,int... weight ) {
		// 遍历行数
		System.out.println("变长参数：My age is :" + age + ",tall:" + tall);
		System.out.println("变长参数：");
		for (int i = 0; i < weight.length; i++) {
			System.out.println(weight[i]);
			
		}
	}
	
}
